package cn.tedu.charging.device.canal;

import cn.tedu.charging.device.dao.repository.GEOTemplateContext;
import cn.tedu.charging.device.dao.repository.StationCacheTemplateRepository;
import cn.tedu.charging.device.pojo.po.StationCanalPO;
import cn.tedu.charging.device.service.DeviceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;


@Slf4j
@Component
@CanalTable("charging_station")
public class StationSyncHandler implements EntryHandler<StationCanalPO> {

    private StationCacheTemplateRepository stationCacheTemplateRepository;

    public StationSyncHandler(GEOTemplateContext geoTemplateContext){
        this.stationCacheTemplateRepository=geoTemplateContext.geoRepositoryTemplate();
    }

    @Override
    public void insert(StationCanalPO stationCanalPO) {
        log.debug("数据库已插入一个新的充电站数据 是 stationCanalPO={}",stationCanalPO);
        stationCacheTemplateRepository.add(stationCanalPO);
        log.debug("已插入redis");
        EntryHandler.super.insert(stationCanalPO);
    }

    @Override
    public void update(StationCanalPO before, StationCanalPO after) {
        log.debug("数据库已更新充电站数据 是 stationCanalPO={}",before);
        stationCacheTemplateRepository.add(after);
        log.debug("已更新redis");
        EntryHandler.super.update(before, after);
    }

    @Override
    public void delete(StationCanalPO stationCanalPO) {
        log.debug("数据库已删除充电站数据 是 stationCanalPO={}",stationCanalPO);
        stationCacheTemplateRepository.delete(stationCanalPO);
        log.debug("已删除redis");
        EntryHandler.super.delete(stationCanalPO);
    }
}
